home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
PASCAL
/
1463.ZIP
/
DRAW-2D.ARC
/
DRAW2D.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1987-06-13
|
5KB
|
155 lines
PROGRAM DRAW2D;
(* 2D-GRAPHIC EDITOR *)
CONST
UNIMEAS = 'FEET';
HARDXPIX = 640; (** HARDWARE DEPENDENT **)
HARDYPIX = 200; (** HARDWARE DEPENDENT **)
STATYPIX = 40; (** HARDWARE DEPENDENT **)
ASPECT = 0.6; (** HARDWARE DEPENDENT **)
MAXSIZE = 500; (* OBJ. ARRAY SIZE *)
{$I TYPE.PAS}
{$I VAR.PAS}
{$I GRINIT.PAS}
{$I GRMAT.PAS}
{$I TRIM.PAS}
{$I PROC1.PAS}
{$I MOUSEX.PAS}
{$I STATUS1.PAS}
{$I STATUS2.PAS}
{$I MENU.PAS}
{$I NORMCUR.PAS}
{$I CROSSCUR.PAS}
{$I GETMOUSE.PAS}
{$I WRTHDR.PAS}
{$I GETDIR.PAS}
{$I GETNAM.PAS}
{$I GETMRG.PAS}
{$I MERGEDR.PAS}
{$I LOADDR.PAS}
{$I SAVEDR.PAS}
{$I REDRAW.PAS}
{$I DRAWOBJ.PAS}
{$I ROTATES.PAS}
{$I SKALE.PAS}
{$I ZOOMIN.PAS}
{$I ZOOMOUT.PAS}
{$I PAN.PAS}
{$I XLATE.PAS}
{$I PTDIST.PAS}
{$I DELOBJ.PAS}
{$I DELAREA.PAS}
{$I SAVEFILE.PAS}
{$I SELOBJ.PAS}
{$I SELAREA.PAS}
{$I LEV1OPT.PAS}
{$I LEV2OPT.PAS}
{$I LEV3OPT.PAS}
{$I LEV4OPT.PAS}
{$I LEV5OPT.PAS}
BEGIN
BELLCODE := 7; (** HARDWARE DEPENDENT **)
HRCOLOR := 7; (** HARDWARE DEPENDENT **)
NPOLY := 90;
CLIN := FALSE;
XWORLD := 60.0;
BLKLINE := GENSTR(' ',79);
CLRSCR;
WRTHDR;
PAUSE;
(* INITIALIZATION *)
HIRES; (* TURBO-PASCAL PROC *)
HIRESCOLOR(HRCOLOR); (* TURBO-PASCAL PROC *)
GRINIT(0,HARDXPIX-1,0,HARDYPIX-STATYPIX-1); (* PIXEL CO-ORD *)
GRNDC(0.0,0.0,1.0,ASPECT); (* NORM. DEVICE CO-ORD *)
GRVIEW(0.0,0.0,1.0,ASPECT); (* VIEWPORT CO-ORD *)
GRWORLD(0.0,0.0,XWORLD,XWORLD*ASPECT); (* WORLD CO-ORD *)
TP := '.DRW'; (* USE '.COP' FOR 8087 VERSION *)
LASTPOS := 1;
INITSTK; (* INIT MATRIX STACK *)
OBJ[1] := 'POINT';
OBJ[2] := 'LINE';
OBJ[3] := 'BOX';
OBJ[4] := 'CIRCLE';
OBJ[5] := 'V-LINE';
OBJ[6] := 'H-LINE';
OTYP := 1;
MODE[1] := 'DRW ';
MODE[2] := 'AREA';
MODE[3] := 'OBJ ';
MNUM := 1;
OBJPTR := 1;
STARTOBJ := FALSE;
LEV := 1;
M1 := 0;
M2 := 0;
M3 := 0;
M4 := 0;
MOUSE(M1,M2,M3,M4); (* INIT MOUSE DRIVER *)
M1 := 8;
M3 := YPMIN;
M4 := YPMAX + 8;
MOUSE(M1,M2,M3,M4); (* LIMIT VERTICAL MOVEMENT *)
(* start of program *)
QUIT := FALSE;
BUTTON1 := FALSE;
BUTTON2 := FALSE;
LOADDR(CODE);
IF CODE <> 0 THEN QUIT := TRUE;
IF NOT(QUIT) THEN
BEGIN
REDRAW;
M1 := 4; { Set Mouse Cursor to Lower Left }
M3 := XPMIN;
M4 := YPMAX;
Mouse(M1,M2,M3,M4);
CrossCur; { Use Cross for cursor shape }
CURFLAG := TRUE;
M1 := 1; { Turn on Mouse cursor }
Mouse(M1,M2,M3,M4);
MOVCUR(24,12);
WRITE('Move mouse to select location or option!!');
RING(1);
END;
WHILE NOT(QUIT) DO
BEGIN
STOP := FALSE;
WHILE NOT(STOP) DO
BEGIN
GETMOUSE(X,Y,PIXX,PIXY,OPTION); (* GET INPUT *)
IF (BUTTON1) OR (BUTTON2) THEN STOP := TRUE;
IF (BUTTON1) AND (BUTTON2) THEN
BEGIN
STOP := FALSE;
RING2;
MOVCUR(24,1);
WRITE(BLKLINE);
MOVCUR(24,2);
WRITE('Only one button at a time!!');
END
ELSE IF (BUTTON1) AND (STARTOBJ) AND (OPTION <> 0) THEN
BEGIN
STOP := FALSE;
RING2;
MOVCUR(24,1);
WRITE(BLKLINE);
MOVCUR(24,2);
WRITE('Move mouse cursor into graphics area!!');
END
ELSE IF (BUTTON2) AND (STARTOBJ) AND (OPTION <> 0) THEN STARTOBJ := FALSE;
END;
MOVCUR(24,1);
WRITE(BLKLINE);
CASE LEV OF
1:LEV1OPT;
2:LEV2OPT;
3:LEV3OPT;
4:LEV4OPT;
5:LEV5OPT;
END; (*CASE*)
END;
TEXTMODE(BW80); (* TURBO-PASCAL PROC *)
WRITELN;
WRITELN;
WRITELN(' ** DRAW-2D GRAPHIC EDITOR Exiting **');
RING(1);
END.